const { REDIS_CONF } = require('../config/db')
const redis = require('redis')
//配置redis客户端
const redisClient = redis.createClient(REDIS_CONF.port, REDIS_CONF.host)
redisClient.on('error', err => {
  console.error(err);
})//用来捕获错误的

function set(key, val) {
  if (typeof val === 'object') {
    val = JSON.stringify(val)
  }//这里是想来将这个value转为字符串，因为这是规定，但是为什么不设置这个键呢
  redisClient.set(key, val, redis.print)//这个是用来测试打印成功或是执行失败
}


function get(key) {
  const promise = new Promise((resolve, reject) => {
    redisClient.get(key, (err, val) => {
      if (err) {
        reject(err)
        return
      }
      if (val === null) {//我没有在redis里找到我所对应的值
        resolve(null)
      }

      try {
        resolve(JSON.parse(val))//如果它是一个string转换失败

      } catch (err) {
        resolve(err)//不是异常捕获，这一点再去理解理解
      }
    })
  })
  return promise
}


module.exports = {
  get,
  set
}